home *** CD-ROM | disk | FTP | other *** search
Wrap
Oberon Document | 1994-06-07 | 5.1 KB | 128 lines | [ oODC/obnF]
Documents.StdDocumentDesc Documents.DocumentDesc Containers.ViewDesc Views.ViewDesc Stores.StoreDesc Documents.ModelDesc Containers.ModelDesc Models.ModelDesc Stores.ElemDesc TextViews.StdViewDesc TextViews.ViewDesc TextModels.StdModelDesc TextModels.ModelDesc TextModels.AttributesDesc Geneva TextRulers.StdRulerDesc TextRulers.RulerDesc TextRulers.StdStyleDesc TextRulers.StyleDesc TextRulers.AttributesDesc Geneva Geneva 7.3 FormControllers DEFINITION FormControllers; IMPORT Views, Controllers, Containers, FormModels, FormViews; CONST noSelection = Containers.noSelection; noFocus = Containers.noFocus; TYPE Controller = POINTER TO ControllerDesc; ControllerDesc = RECORD (Containers.ControllerDesc) form-: FormModels.Model; view-: FormViews.View; PROCEDURE (c: Controller) Clone (): Controller; PROCEDURE (c: Controller) ThisView (): FormViews.View; PROCEDURE (c: Controller) Select (view: Views.View); PROCEDURE (c: Controller) Deselect (view: Views.View); PROCEDURE (c: Controller) IsSelected (view: Views.View): BOOLEAN; PROCEDURE (c: Controller) GetSelection (): List; PROCEDURE (c: Controller) SetSelection (l: List) END; Directory = POINTER TO DirectoryDesc; DirectoryDesc = RECORD (Controllers.DirectoryDesc) PROCEDURE (d: Directory) New (): Controller; PROCEDURE (d: Directory) NewView (f: FormModels.Model; opts: SET): FormViews.View END; List = POINTER TO ListDesc; ListDesc = RECORD next: List; view: Views.View END; VAR dir-, stdDir-: Directory; PROCEDURE Focus (): Controller; PROCEDURE Insert (c: Controller; view: Views.View; l, t, r, b: LONGINT); PROCEDURE SetDir (d: Directory); PROCEDURE Install; END FormControllers. FormControllers are standard controllers for FormViews. TYPE Controller Interface, Extension Standard controllers for form views. form-: FormModels.Model form # NIL The controller's model. view-: FormViews.View view # NIL & view.ThisModel() = form The controller's view. PROCEDURE (c: Controller) Clone (): Controller Default, Extension Result type is narrowed. PROCEDURE (c: Controller) Select (view: Views.View) Interface Adds a view to the current selection, if it isn't selected already. view in c.form 20 ~(noSel IN c.opts) 21 c.IsSelected(view) c.ThisFocus() = NIL PROCEDURE (c: Controller) Deselect (view: Views.View) Interface Removes a view from the current selection, if it is selected. view in c.form 20 ~c.IsSelected(view) PROCEDURE (c: Controller) IsSelected (view: Views.View): BOOLEAN Interface Determines whether the given view is currently selected or not. NIL is not considered selected. view = NIL OR view in c.form 20 PROCEDURE (c: Controller) GetSelection (): List Interface Returns the list of selected subviews. all views of the result list are in c.form PROCEDURE (c: Controller) SetSelection (l: List) Interface Removes the existing selection, and selects the subviews of l. all views of l are in c.form 20 TYPE Directory Interface, Extension Directory for form view controllers. PROCEDURE (d: Directory) New (): Controller Interface, Extension Create and return a new form view controller. result # NIL result.init result.form = NIL result.view = NIL result.opts = {} PROCEDURE (d: Directory) NewView (m: FormModels.Model; opts: SET): FormViews.View Interface Create a new form view with a new controller for form m, and return the view. result # NIL result.init result.ThisModel() = m result.ThisController() # NIL result.ThisController().opts = opts VAR dir-, stdDir-: Directory Controller directories. PROCEDURE Focus (): Controller Returns the focus controller, if the focus currently is a form view, otherwise it returns NIL. PROCEDURE Insert (c: Controller; view: Views.View; l, t, r, b: LONGINT) Inserts view into c's view at the position (l, t, r, b). If necessary, the position is slightly corrected (rounded) such that view's top-left corner comes to lie on the grid. The size of view is not changed, however. PROCEDURE SetDir (d: Directory) Set directory d. d # NIL 20 dir = d PROCEDURE Install Used internally. TextControllers.StdCtrlDesc TextControllers.ControllerDesc Containers.ControllerDesc Controllers.ControllerDesc Geneva Documents.ControllerDesc